package ru.niir.goodfil.exceptions;

/**
 * Исключение возникает, если для проверки объекта используется обработчик, предназначенный для объектов другого типа.
 * @see ru.niir.goodfil.db.handlers.Goodfil более подробная информаци о том, как объект Goodfil использует обработчики для проверки сущностей.  
 */
public class WrongHandlerException extends GoodfilRuntimeException
{
    /**
     * Класс, для работы с которым предназначен обработчик
     */
    private final Class handlerClass;

    /**
     * Класс объекта, который был передан в обработчик
     */
    private final Class objectClass;

    /**
     * Конструктор
     * @param handlerClass класс обработчика
     * @param objectClass класс объекта
     */
    public WrongHandlerException(Class handlerClass, Class objectClass)
    {
        super("Объект был передан в не подходящий обработчик");

        assert handlerClass != null;
        assert objectClass != null;
        assert handlerClass != objectClass;
        assert !handlerClass.equals(objectClass);

        this.handlerClass = handlerClass;
        this.objectClass = objectClass;
    }

    /**
     * Возвращает класс, для работы с которым предназначен обработчик
     * @return класс, для работы с которым предназначен обработчик
     */
    public Class getHandlerClass()
    {
        return handlerClass;
    }

    /**
     * Возвращает класс объекта, который был передан в обработчик
     * @return класс объекта, который был передан в обработчик
     */
    public Class getObjectClass()
    {
        return objectClass;
    }
}
